define(['jquery'],function($){

    $.fn.specification=function(){
        //var that = $.extend({},defaults,a);

        return this.each(function() {
            var that = $(this);
			if(that.length==0) return false;
            //规格种类数量
            var tdata={};

            var price        = $('input[name="s_price"]').val();
            var market_price = $('input[name="s_market_price"]').val();

            var table=that.find('.upload-color');
            var formatall=that.find('.formatall');

            var specdata=$('#edit_spec').html();
            var spec_package=$('#spec_package').html();

            var tr='<tr data-id="1">'
                +'    <td><span class="j-panel"><label><em></em><span class="cname"></span></label></span></td>'
                +'    <td>'
                +'        <a class="btn-gary upload" href="javascript:;">本地上传<input type="file" id="fileupload1"></a>'
              //  +'        <a class="btn-gary upload" href="javascript:;">图片空间<input type="file" id="fileupload2"></a>'
				+'        <div class="fitem fl"></div>'
                +'    </td>'
                +'</tr>';
            var tr2='<tr>';
            that.find('.format').each(function(){
                tr2+='    <td class="c'+($(this).data('cid'))+'" style="display: none;"></td>'
            });

            tr2+='    <td><input type="text" name="price[]" class="ipt-txt price" value=""></td>'
                +'    <td><input type="text" name="market_price[]" class="ipt-txt market_price" value=""></td>'
                +'    <td><input type="text" name="qty[]" class="ipt-txt qty" value=""></td>'
                +'</tr>';
				
			that.find('h4').click(function(){ 
				var h4 = $(this);
				if($(this).hasClass('h4')){
					var txt = $(this).html();
					h4.html('<input type="text" name="sp_cls" value="'+txt+'">');
					h4.removeClass('h4');
					
					h4.find('[name="sp_cls"]').change(function(){
						var old_val = h4.next('input').val();
						var val_arr = old_val.split(',');
						val_arr[1] = $(this).val();
						h4.next('input').val(val_arr.join(','));
					});
					
					h4.find('[name="sp_cls"]').blur(function(){
						var txt = $(this).val();
						h4.html(txt);
						h4.addClass('h4');
					});
				}
			});

			

            var createdata=function(){
                var data=new Array();
                var hasdata=false;
                that.find('.format').each(function(i,j){
                    eval('var pitem={'+$(j).data('rel')+'};');

                    data[i]=new Array();
                    data[i]['cid']=$(j).data('cid');
                    data[i]['isupload'] = pitem.upload;
                    data[i]['iscolor'] = $(j).hasClass('colorbox');
                    data[i]['items']=[];

                    $(j).find('.item').each(function(index, val) {
                        var cb=$(this).find('.checkInput:not(.other)');
                        if(cb.is(':checked')){
                            eval('var item={'+cb.closest('.item').data('rel')+'};');

                            data[i]['items'].push(item);
                            hasdata=true;
                        }
                    });
                });

                formatall.hide();
                //formatall.find('tbody tr').remove();
                formatall.find('[class*="c"]').hide();

                table.hide();
                //table.find('tbody tr').remove();
                if(hasdata){
                    var dnum=data.length;

                    $.each(data,function(y,z){
                        if(z.isupload && z.items.length){
                            //上传table
                            var uploadpanel=that.find('.format').eq(y).find('.upload-color');
                            uploadpanel.show();
                            //uploadpanel.find('tbody tr').remove();

                            $.each(z.items,function(i,j){
                                if(uploadpanel.find('tbody tr[data-id="'+ j.id +'"]').length==0) {

                                    var temp = $(tr);
                                    temp.attr('data-id', j.id);
                                    temp.find('.cname').html(j.name);
                                    if (z.iscolor) {
                                        temp.find('em').css({'background-color': j.color});
                                    } else {
                                        temp.find('em').hide();
                                    }
                                    var img='';
                                    if(j.img){
                                        var img='<img style="float:left;height:28px;margin:0 5px;" alt="" src="'+$("#spec_path").html()+j.img+'"><a class="fl del" href="javascript:;">删除</a><input type="hidden" value="'+j.img+'" name="photo_'+j.id+'[]">'
                                        temp.find('.fitem').html(img);
                                    }
                                    uploadpanel.find('tbody').append(temp);
                                    temp.find('[type="file"]').attr('data-img', z.cid + ',' + j.id).fupload({
                                        path: 'c3BlYw==',
                                        input: 'photo_' + j.id,
                                        max: 1,
                                        dev: 'spec'
                                    });
                                }
                            });
                        }
                    });

                    if(dnum==2){
                        if(data[0].items.length && data[1].items.length){
                            $.each(data[0].items,function(i,j){
                                $.each(data[1].items,function(k,l){
                                    if(formatall.find('tbody tr[data-rel="' + data[0].cid + '_'+ j.id+',' + data[1].cid + '_'+ l.id+'"]').length==0) {
                                        var temp = $(tr2);
                                        temp.find('.c' + data[0].cid).html(j.name).attr('data-id', j.id);
                                        temp.find('.c' + data[1].cid).html(l.name).attr('data-id', l.id);

                                        temp.find('.price').attr('name', 'price_' + j.id + '_' + l.id).attr('value', price);
                                        temp.find('.market_price').attr('name', 'market_price_' + j.id + '_' + l.id).attr('value', market_price);
                                        temp.find('.qty').attr('name', 'qty_' + j.id + '_' + l.id);
                                        temp.find('.itemno').attr('name', 'itemno_' + j.id + '_' + l.id);
                                        temp.find('.code').attr('name', 'code_' + j.id + '_' + l.id);

                                        formatall.find('tbody').append('<tr data-rel="' + data[0].cid + '_'+ j.id+',' + data[1].cid + '_'+ l.id + '">' + temp.html() + '</tr>');
                                    }
                                });
                            });
                            formatall.find('[class*="c"]').show();
							formatall.show();
							
                        }else{
                            /*$.each(data,function(y,z){
                                if(z.items.length){
                                    $.each(z.items,function(k,l){
                                        var temp=$(tr2);
                                        temp.find('.c'+ z.cid).html(l.name);
										
										temp.find('.price').attr('name','price_'+l.id).attr('value',price);
										temp.find('.market_price').attr('name','market_price_'+l.id).attr('value',market_price);
										temp.find('.qty').attr('name','qty_'+l.id);
										temp.find('.itemno').attr('name','itemno_'+l.id);
										temp.find('.code').attr('name','code_'+l.id);
                                        formatall.find('tbody').append('<tr>'+temp.html()+'</tr>');
                                    });
                                    formatall.find('.c'+z.cid).show();
                                }
                            });*/
                        }
                    }else{
                        $.each(data,function(y,z){
                            if(z.items.length){
                                $.each(z.items,function(k,l){
                                    if(formatall.find('tbody tr[data-rel="' + z.cid + '_'+ l.id+'"]').length==0) {
                                        var temp = $(tr2);
                                        temp.find('.c' + z.cid).html(l.name).attr('data-id', l.id);
                                        temp.find('.price').attr({'name':'price_' + l.id,'value':price});
                                        temp.find('.market_price').attr({'name':'market_price_' + l.id,'value':market_price});
                                        temp.find('.qty').attr('name', 'qty_' + l.id);
                                        //temp.find('.itemno').attr('name', 'itemno_' + l.id);
                                        //temp.find('.code').attr('name', 'code_' + l.id);
                                        formatall.find('tbody').append('<tr data-rel="' + z.cid + '_'+ l.id + '">' + temp.html() + '</tr>');
                                    }
                                });
                                formatall.find('.c'+z.cid).show();
                            }
                        });
                        formatall.find('input').show();
						formatall.show();
                    }
                }
            }

            //商品规格
            that.undelegate('change').delegate('.format .item .j-panel .checkInput', 'change', function(){
                table=that.find('.upload-color');
                formatall=that.find('.formatall');

                var t=$(this);
                var id=t.val();
                var titem= t.closest('.item');
                eval('tdata={'+titem.data('rel')+'}');

                var format=t.closest('.format');
                var cid=format.data('cid');
                eval('var pitem={'+format.data('rel')+'}');

                var pdata={input:'s'+cid+'_item_'+tdata.id};

                var iscolorbox=format.hasClass('colorbox');//是否为颜色模块
                var isother=t.hasClass('other'); //是否为其它选框

                price        = $('input[name="s_price"]').val();
                market_price = $('input[name="s_market_price"]').val();

                var marks=$('<span class="marks"><em>备注</em><input type="text" name="'+pdata.input+'[]" class="ipt-txt"></span>');

                var mks=t.parents('.item').find('.marks');

                //勾选时
                if(t.is(':checked')){
                    var label=$('<input type="text" class="ipt-txt" name="'+pdata.input+'[]" value="'+tdata.name+'">');

                    if(pitem.alias){//是否允许别名
                        t.siblings('label').html('');
                        if(iscolorbox){
                            var color='<em class="'+tdata.color+'"></em>';
                            if(t.hasClass('other')==false){
                                t.siblings('label').append(color);
                            }
                        }
                        t.siblings('label').append(label);
                    }

                    //添加备注
                    if(mks.length==0 && isother==false ){
                        if(pitem.remark) {//是否允许备注
                            marks.find('.ipt-txt').val(tdata.mark);
                            t.parents('.item').append(marks);
                        }

                        createdata();
                    }

                }else{
                    mks.remove();   //移除备注
					
					//商品总数量改变
					var qty = 0;
					$('.qty').each(function(index, element) {
						if($(this).val()!='' && $(this).val()!=undefined){ 
							qty+=parseInt($(this).val());
						}
					});
					$('[name="store"]').val(qty);


                    if(isother==false){
                        t.siblings('label').html('');
                        if(iscolorbox){
                            t.siblings('label').append('<em class="'+tdata.color+'"></em>');
                        }
                        t.siblings('label').append('<span class="cname">'+tdata.name+'</span>');
                    }

                    formatall.find('tbody tr[data-rel*="' + cid + '_'+ tdata.id+'"]').remove();
                    format.find('.table-format tr[data-id="'+tdata.id+'"]').remove();

                    createdata();
                }

                //
                t.siblings('label').find('.ipt-txt').unbind('keyup').bind('keyup',function(){
					var titem=$(this).closest('.item');
					eval('tdata={'+titem.data('rel')+'}');
					
                    var ipt=$(this);
                    var txt=ipt.val();
                    if(txt==''){
                        txt=tdata.name;
                    }

                    format.find('tbody tr[data-id="'+id+'"]').find('.cname').html(txt);
                    formatall.find('tbody td.c'+cid+'[data-id="'+id+'"]').html(txt);
                });
				t.siblings('label').find('.ipt-txt').blur(function(){
					var titem=$(this).closest('.item');
					eval('tdata={'+titem.data('rel')+'}');
					
                    var ipt=$(this);
                    if(txt==''){
                        ipt.val(tdata.name);
                    }
                    var txt=ipt.val();
                    //添加-------------------------------------
                    if( isother && ipt.val()!==tdata.name && ipt.val()!=''){
                        var time = new Date().getTime();
                        time=time.toString();
                        time=time.substr(0,10);

						var rel="id:"+time+",cid:"+cid+",name:'"+txt+"',mark:'',color:'',img:''";
						if(iscolorbox){ rel+=",color:''"; } 
                        var item=$('<div class="item" data-rel="'+rel+'">' +
                        '   <input type="hidden" class="itemv" name="sitemval_'+cid+'_'+time+'"  value="'+rel+'" >'+
                        '   <span class="j-panel">' +
                        '       <input type="checkbox" class="checkInput" name="sitem_'+cid+'_'+time+'" value="'+time+'">' +
                        '       <label><span class="cname">'+txt+'</span></label>' +
                        '   <span>' +
                        '</div>');

                        

                        if(iscolorbox){
                            $(item).find('.cname').before('<em class="'+tdata.color+'"></em>');
                        }
                      //  $(item).attr('data-rel',rel);
                        t.parents('li').append(item);
                        ipt.val(tdata.name);
                    }else{
                        tdata.name=txt;
                        updateitem(titem,tdata);
                    }
                });

                titem.find('.marks .ipt-txt').unbind('keyup').bind('keyup',function(){
                    var ipt=$(this).val();
                    ipt=ipt.replace(/[\'|\"]/,'');
                    $(this).val(ipt);

					var titem=$(this).closest('.item');
					eval('tdata={'+titem.data('rel')+'}');
					
                    tdata.mark=ipt;
                    updateitem(titem,tdata);
                });

            });

			that.delegate('.fitem .del', 'click', function(){
                var id = $(this).closest('tr').data('id');
                var formatbox= $(this).closest('.format');
                var sitem = formatbox.find('.item[data-id="'+id+'"]');
                eval('var rel={'+sitem.data('rel')+'}');
                rel.img='';

                $(this).parent().html('');
                updateitem(sitem,rel);
			});
			
			//数据检测
			that.delegate('.price,.market_price','keyup',function(){
				if(!/^\d*(\.)?\d*$/.test($(this).val())){
					$(this).val('');
				}
			});
			
			
			//套餐库存改变时，商品数量也随之改变
			that.delegate('.qty','keyup',function(){
				if(!/^\d*$/.test($(this).val())){
					$(this).val('');
				}else{
					var qty = 0;
					$('.qty').each(function(index, element) {
						if($(this).val()!='' && $(this).val()!=undefined){ 
							qty+=parseInt($(this).val());
						}
					});
					$('[name="store"]').val(qty);
				}
			});

            var updateitem=function(titem,data){
                tdata=data;
                var rel=jsonstr(data);
                titem.data('rel',rel);
                titem.find('.itemv').val(rel);
            };
            var jsonstr=function(data){
                var tempv=[];
                $.each(data,function(m,n){
                    tempv.push(m+":'"+n+"'");
                });
                return tempv.join(',');
            };
            var init = function(){
                if(!empty(specdata) && specdata!='false'){
                    eval('var specdata='+specdata+';');
                    $.each(specdata.spec_info,function(i,j){
                        var item=that.find('.item[data-id="'+i+'"]');
                        var rel= jsonstr(j);
                        if(item.length==0){
                            var oitem=that.find('.format[data-cid="'+ j.cid+'"] li').eq(1);
                            var additem=$('<div class="item" data-id="'+ j.id+'" data-rel="'+rel+'">' +
                            '   <input type="hidden" class="itemv" name="sitemval_'+j.cid+'_'+ j.id+'"  value="'+rel+'" >'+
                            '   <span class="j-panel">' +
                            '       <input type="checkbox" class="checkInput" name="sitem_'+ j.cid+'_'+j.id+'" value="'+j.id+'">' +
                            '       <label><span class="cname">'+ j.name+'</span></label>' +
                            '   <span>' +
                            '</div>');
                            oitem.append(additem);
                        }

                        item.data('rel',rel);
                        item.find('.itemv').val(rel);

                        that.find('.item[data-id="'+i+'"] .checkInput').trigger('click');
                    });
                }
                if(!empty(spec_package) && spec_package!='false'){
                    eval('var spec_package='+spec_package+';');
                    formatall.show();

                    $.each(spec_package,function(i,j){
                        var rel=[];
                        if(j.spec_val_id>0){
                            j.spec_val_cid=getCid(j.spec_val_id);
                            rel.push(j.spec_val_cid + '_'+ j.spec_val_id);
                        }
                        if(j.spec_val_id_two>0){
                            j.spec_val_cid_two=getCid(j.spec_val_id_two);
                            rel.push(j.spec_val_cid_two + '_'+ j.spec_val_id_two);
                        }

                        var li=formatall.find('tbody tr[data-rel="'+rel.join(',')+'"]');
                        if(li.length){
                            li.attr('id',j.id);
                            var idstr='';
                            if(j.spec_val_id>0){
                                li.find('td[data-id="'+ j.spec_val_id+'"]').html(j.name);
                                idstr+='_'+j.spec_val_id;
                            }
                            if(j.spec_val_id_two>0){
                                li.find('td[data-id="'+ j.spec_val_id_two+'"]').html(j.name_two);
                                idstr+='_'+j.spec_val_id_two;
                            }

                            li.find('.price').attr({'name':'price' + idstr,'value': j.price});
                            li.find('.market_price').attr({'name':'market_price' + idstr,'value': j.market_price});
                            li.find('.qty').attr({'name':'qty' + idstr,'value': j.store});
                        }

                    });

                    /*formatall.find('tbody tr').remove();
                    $.each(spec_package,function(i,j){
                        var temp = $(tr2);
                        var rel=[];
                        var idstr='';
                        if(j.spec_val_id){
                            j.spec_val_cid=getCid(j.spec_val_id);
                            temp.find('.c' + j.spec_val_cid).show().html(j.name).attr('data-id', j.spec_val_id);
                            idstr+='_'+j.spec_val_id;
                            rel.push(j.spec_val_cid + '_'+ j.spec_val_id);
                        }
                        if(j.spec_val_id_two){
                            j.spec_val_cid_two=getCid(j.spec_val_id_two);
                            temp.find('.c' + j.spec_val_cid_two).show().html(j.name_two).attr('data-id', j.spec_val_id_two);
                            idstr+='_'+j.spec_val_id_two;
                            rel.push(j.spec_val_cid_two + '_'+ j.spec_val_id_two);
                        }

                        temp.find('.price').attr({'name':'price' + idstr,'value': j.price});
                        temp.find('.market_price').attr({'name':'market_price' + idstr,'value': j.market_price});
                        temp.find('.qty').attr({'name':'qty' + idstr,'value': j.store});

                        formatall.find('tbody').append('<tr id="'+ j.id+'" data-rel="' + rel.join(',') + '">' + temp.html() + '</tr>');
                    });*/
                }
            }
            var getCid=function(id){
                var item=that.find('.item[data-id="'+id+'"]');
                var format=item.closest('.format');
                return format.data('cid');
            }
            init();
        });
    };
});